// pages/cart/cart.js
import storage from '../../utils/storage'
let goods = getApp().globalData.goods
// console.log(goods);
// console.log(1 + '1');
Page({

  /**
   * 页面的初始数据
   */
  data: {
    goods,
    sumPrice: 0,
    checkAll: false
  },

  // 统计商品总数并计算渲染角标的方法
  setBadge() {
    let num = 0
    this.data.goods.forEach(item => {
      num += item.num
    })
    wx.setTabBarBadge({
      index: 2,
      // text: num + '',
      text: String(num)
    })
  },

  // 计算商品总价的方法
  calcPrice() {
    let price = 0
    this.data.goods.forEach(item => {
      if(item.check) {
        price += item.price*item.num
      }
    })
    this.setData({
      sumPrice: price
    })
  },

  // 步进器的值发生变化时触发的函数
  onChange(e) {
    let i = e.currentTarget.dataset.ind
    let val = e.detail
    this.data.goods[i].num = val
    this.calcPrice()
    this.setBadge()
  },

  // 勾选单个商品时触发的逻辑
  singleCheck(e) {
    let i = e.currentTarget.dataset.ind // 索引值表示当前勾选的是第几个商品
    let val = e.detail // 当前点击的勾选框的值
    this.data.goods[i].check = val
    let check = this.data.goods.every(item => { // 判断当所有的商品都被勾选中时 全选按钮也要被选中 否则全选按钮不能被选中
      return item.check
    })
    this.setData({
      goods: this.data.goods,
      checkAll: check
    })
    this.calcPrice()
  },

  // 全选事件
  checkAllEv(e) {
    // 如果e.detail的值是true那么就表示全选被选中了 反之全选未被选中
    this.data.goods.forEach(item => {
      item.check = e.detail
    })
    this.setData({
      checkAll: e.detail,
      goods: this.data.goods
    })
    this.calcPrice()
  },

  // 删除单个商品的方法
  del(e) {
    let i = e.currentTarget.dataset.ind
    this.data.goods.splice(i, 1)
    this.setData({
      goods: this.data.goods
    })
    if(this.data.goods.length === 0) {
      this.setData({
        checkAll: false
      })
    }
    this.calcPrice()
    storage(this.data.goods)
    this.setBadge()
  },

  // 页面初次进入时所有商品处于未选中状态
  checkOrigin() {
    this.data.goods.forEach(item => {
      item.check = false
    })
    this.setData({
      goods: this.data.goods
    })
  },

  // 用户点击提交订单时触发的逻辑
  onClickButton() {
    let arr = this.data.goods.filter(item => {
      return item.check
    })
    wx.setStorageSync('order', arr)
    wx.redirectTo({
      url: '/pages/order/order',
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.checkOrigin()
    this.setBadge()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    let goods = getApp().globalData.goods
    this.setData({
      goods
    })
    this.checkOrigin()
    
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})